//package work.timejay.utils.sqlEncrypt;
//
//
//import cn.hutool.core.util.StrUtil;
//import lombok.extern.slf4j.Slf4j;
//import work.timejay.annotations.EncryptField;
//import work.timejay.annotations.EncryptTable;
//
//import java.io.File;
//import java.lang.reflect.Field;
//import java.util.HashSet;
//import java.util.Locale;
//
///**
// * @className:EncryptCommonUtils.java
// * @author:王文杰
// * @version:1.0.0
// * @description:TODO
// * @createTime 2024年01月29日 11:14:00
// */
//@Slf4j
//public class EncryptCommonUtils {
//
//    /**
//     * 表合集
//     */
//    private static final HashSet<String> encryptTableNameSet = new HashSet<>();
//
//    /**
//     * 判断对象是否要加密
//     * @param tableName
//     * @return
//     */
//    public static boolean isEncryptTable(String tableName) {
//        return encryptTableNameSet.contains(StrUtil.upperFirst(tableName));
//    }
//
//
//    public static void scanPackages(File file, String dirPath) {
//        if (file.isFile()) {
//            String substring = file.getAbsolutePath().substring(dirPath.length(), file.getAbsolutePath().length() - 6);
//            String replace = substring.replace("\\", ".");
//            try {
//                Class<?> aClass = Class.forName(replace);
//                boolean isEncryptTable = aClass.isAnnotationPresent(EncryptTable.class);
//                if (isEncryptTable) {
//                    //TODO 可以的跟直观一点 table-fileId
//                    encryptTableNameSet.add(aClass.getSimpleName());
//                }
//            } catch (ClassNotFoundException e) {
//                e.printStackTrace();
//            }
//        }
//        if (file.isDirectory()) {
//            File[] files = file.listFiles();
//            if (null == files) {
//                return;
//            }
//            for (File f : files) {
//                if (f.isFile()) {
//                    String substring = f.getAbsolutePath().substring(dirPath.length(), f.getAbsolutePath().length() - 6);
//                    String replace = substring.replace("\\", ".");
//                    try {
//                        Class<?> aClass = Class.forName(replace);
//                        boolean isEncryptTable = aClass.isAnnotationPresent(EncryptTable.class);
//                        if (isEncryptTable) {
//                            for (Field f1 : aClass.getFields()){
//                                boolean fieldFlag = f1.isAnnotationPresent(EncryptField.class);
//                                if(fieldFlag){
//                                    log.info("add table--->{},field--->{}",aClass.getSimpleName(),f1.getName());
//                                    encryptTableNameSet.add(aClass.getSimpleName()+"-"+f1.getName().toLowerCase(Locale.ROOT));
//                                }
//                            }
//                        }
//                    } catch (ClassNotFoundException e) {
//                        e.printStackTrace();
//                    }
//                }
//                if (f.isDirectory()) {
//                    scanPackages(new File(f.getPath()), dirPath);
//                }
//            }
//        }
//    }
//
//}
